以前折腾过一阵IOS给停止了,最近因要了解Rect-Native重新学习下,希望这次能坚持

疑惑:认识

  • 消息: Objective-C 调用其类的方法称为起发送消息

  • 「@」符号: 起到编译标识的作用;

  • 『+』: 类的静态方法

  • 『-』: 类的所属方法

  • 『NSXXX』:是个曾经是NextStep 公司的时候开发的库,oc 编译是个平级函数资源,为防止重复采用前缀区别对待

  • ORC: Automatic Reference Counting 就是代码中自动加入了retain/release http://www.yifeiyang.net/development-of-the-iphone-simply-1/

疑惑: 类的方法

Person.m文件

1
2
3
4
5
6
7
8
9
10
11
12
#import <Foundation/Foundation.h>

@interface Person : NSObject {

int width;

int height;
}

@property int age;

@end

Person.h w文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#import "Person.h"

@implementation Person {
int baidu;
}

- (Person*)init
{
width = 100;
_age = 10;
self->baidu = 100000;
self->_age = 100;
self.age = 10000;
return self;
}

- (NSString*)description
{
NSLog(@"%d,%d, %d", width, height, self->baidu);
return @"aaaaaaaaaa";
};

- (void)add
{
NSLog(@"this age is %d", self.age);
}
@end

  • @property 是声明了属性,具有了set和get方法,可以采用.来操作,其属性命名为_名字

  • 方法中类属性可以省略 self, 属性直接声明是在其{}中

疑惑:类中的方法

定义

1
-/+ (返回类型) 方法名: (参数1类型) 形参1  参数2描述: (参数2类型) 形参2 参数3描述: (参数3类型) 形参3 .......

调用

1
[object 方法名:参数1 参数描述2:参数2 ...];

OC 中 方法名可以作为参数1的描述,方法的所有描述构成一个完整的方法,只有描述不同其方法可认为是不同的;

如下面是错误的,方法重复

1
2
- (NSString) initWithAdd:(int) arg1;
- (NSString) initWithAdd: (float) arg2;

其下面是 ok 的:

1
2
3
    - (NSString) initWithAdd:(int) arg1;
- (NSString) initWithAdd:(int) arg1 second:(float) arg2;
`

疑惑:接口、Block、Category

接口

oc没有严格的接口定义,采用@protocol 去约束类的方法;@optional不强制实现,@required表必须实现, NS 库中多数类为接口如 NSObject, UIApplicationDelegate

1
2
3
4
5
6
7
8
9
10
11
@protocol AnimalDelegate <NSObject> //AnimalDelegate扩展语 NSObject协议

@required //必须实现的方法
-(void)eat;

@optional //可选实现的方法
-(void)run;
-(void)say;
-(void)sleep;

@end

Block

可以作为匿名函数来理解, 作为类的属性定义

定义

1
@property (nonatomic,copy) void(^ onClick)(KCButton *);

实现

1
2
3
4
KCButton *button=[[KCButton alloc]init];
button.onClick=^(KCButton *btn){
NSLog(@"Invoke onClick method.The button is:%@.",btn);
};

http://www.jianshu.com/p/17872da184fb

Category分类

如果对已有类进行扩展可采用继承或者此分类的形式, 如扩展 NSString 类
参考:http://blog.csdn.net/yhawaii/article/details/6992094

IOS生命周期

IOS 运行是代理、委托或者过程,中间经过层层事件传递, 继承与UIApplicationDelegate接口,生命函数大概如下

  • no runting -> inactive -> active

application:didFinishLaunchingWithOptions -> applicationDidBecomeActive

  • 切换到其他app, active -> inactive -> background

applicationDidBecomeActive -> applicationWillResignActive ->applicationDidEnterBackground

  • 从其他 app 切换回来, background -> inactive -> active

applicationDidEnterBackground -> applicationWillEnterForeground -> applicationDidBecomeActive

  • 锁屏 active -> inactive -> background

applicationDidBecomeActive -> applicationWillResignActive -> applicationDidEnterBackground

  • 异常终止 end

applicationWillTerminate

参考资料